home *** CD-ROM | disk | FTP | other *** search
/ Programming in Microsoft Windows with C# / Programacion en Microsoft Windows con C#.iso / Original Code / Tree View and List View / ExplorerLike / FileListView.cs < prev   
Encoding:
Text File  |  2001-01-15  |  3.1 KB  |  111 lines

  1. //-------------------------------------------
  2. // FileListView.cs ⌐ 2001 by Charles Petzold
  3. //-------------------------------------------
  4. using System;
  5. using System.Diagnostics;          // For Process.Start
  6. using System.Drawing;
  7. using System.IO;
  8. using System.Windows.Forms;
  9.  
  10. class FileListView: ListView
  11. {
  12.      string strDirectory;
  13.  
  14.      public FileListView()
  15.      {
  16.           View = View.Details;
  17.  
  18.                // Get images for file icons.
  19.  
  20.           ImageList imglst = new ImageList();
  21.           imglst.Images.Add(new Bitmap(GetType(), "DOC.BMP"));
  22.           imglst.Images.Add(new Bitmap(GetType(), "EXE.BMP"));
  23.  
  24.           SmallImageList = imglst;
  25.           LargeImageList = imglst;
  26.  
  27.                // Create columns.
  28.  
  29.           Columns.Add("Name",      100, HorizontalAlignment.Left);
  30.           Columns.Add("Size",      100, HorizontalAlignment.Right);
  31.           Columns.Add("Modified",  100, HorizontalAlignment.Left);
  32.           Columns.Add("Attribute", 100, HorizontalAlignment.Left);
  33.      }
  34.      public void ShowFiles(string strDirectory)
  35.      {
  36.                // Save directory name as field.
  37.                
  38.           this.strDirectory = strDirectory;
  39.  
  40.           Items.Clear();
  41.           DirectoryInfo dirinfo = new DirectoryInfo(strDirectory);
  42.           FileInfo[] afileinfo;
  43.  
  44.           try
  45.           {
  46.                afileinfo = dirinfo.GetFiles();
  47.           }
  48.           catch
  49.           {
  50.                return;
  51.           }
  52.  
  53.           foreach (FileInfo fi in afileinfo)
  54.           {
  55.                     // Create ListViewItem.
  56.  
  57.                ListViewItem lvi = new ListViewItem(fi.Name);
  58.  
  59.                     // Assign ImageIndex based on filename extension.
  60.  
  61.                if (Path.GetExtension(fi.Name).ToUpper() == ".EXE")
  62.                     lvi.ImageIndex = 1;
  63.                else
  64.                     lvi.ImageIndex = 0;
  65.  
  66.                     // Add file length and modified time sub-items.
  67.  
  68.                lvi.SubItems.Add(fi.Length.ToString("N0"));
  69.                lvi.SubItems.Add(fi.LastWriteTime.ToString());
  70.  
  71.                     // Add attribute subitem.
  72.  
  73.                string strAttr = "";
  74.                
  75.                if ((fi.Attributes & FileAttributes.Archive) != 0)
  76.                     strAttr += "A";
  77.  
  78.                if ((fi.Attributes & FileAttributes.Hidden) != 0)
  79.                     strAttr += "H";
  80.  
  81.                if ((fi.Attributes & FileAttributes.ReadOnly) != 0)
  82.                     strAttr += "R";
  83.  
  84.                if ((fi.Attributes & FileAttributes.System) != 0)
  85.                     strAttr += "S";
  86.  
  87.                lvi.SubItems.Add(strAttr);
  88.  
  89.                     // Add completed ListViewItem to FileListView.
  90.  
  91.                Items.Add(lvi);
  92.           }
  93.      }
  94.      protected override void OnItemActivate(EventArgs ea)
  95.      {
  96.           base.OnItemActivate(ea);
  97.  
  98.           foreach (ListViewItem lvi in SelectedItems)
  99.           {
  100.                try
  101.                {
  102.                     Process.Start(Path.Combine(strDirectory, lvi.Text));
  103.                }
  104.                catch
  105.                {
  106.                     continue;
  107.                }
  108.           }
  109.      }
  110. }
  111.